package net.caixiaomi.info.Lottery.fragment;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.alibaba.fastjson.JSONObject;

import net.caixiaomi.info.Lottery.model.TrendChartData;
import net.caixiaomi.info.Lottery.trend.data.TrendData;
import net.caixiaomi.info.Lottery.trend.ui.DDTrendChart;
import net.caixiaomi.info.Lottery.trend.ui.LottoTrendView;
import net.caixiaomi.info.R;
import net.caixiaomi.info.model.BaseCallModel;
import net.caixiaomi.info.model.MatchResultNewModel;
import net.caixiaomi.info.model.MatchingItem;
import net.caixiaomi.info.net.RequestService;
import net.caixiaomi.info.net.ResponseCallback;
import net.caixiaomi.info.net.ResponseError;
import net.caixiaomi.info.net.RetrofitManage;
import net.caixiaomi.info.util.Constants;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.TreeSet;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

/**
 * Created by suntian on 2018/8/16.
 */

public class TrendChartFragment extends Fragment implements DDTrendChart.ISelectedChangeListener {

    private LottoTrendView mTrendView;
    final int maxSignleNum = 9;
    private DDTrendChart mTrendChart;
    private int type;
    private ArrayList arrayList;
    private boolean mVisible;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view=View.inflate(getActivity(), R.layout.activity_lotto_trend,null);
        this.mTrendView = (LottoTrendView) view.findViewById(R.id.ltv_trendView);
        this.mTrendChart = new DDTrendChart(getActivity(), this.mTrendView);
        this.mTrendView.setChart(this.mTrendChart);
        this.mTrendChart.setShowYilou(true);
        this.mTrendChart.setDrawLine(true);
        this.mTrendChart.setSelectedChangeListener(this);
        if(mTrendChart!=null){
            mTrendChart.setXBottomVisible(mVisible);
        }
//        loadData();
//        mHandler.sendMessage(mHandler.obtainMessage(120, arrayList));
        return view;
    }

    public void setType(int type){
        this.type=type;
    }

    private Handler mHandler = new Handler() {
        public void handleMessage(Message paramMessage) {
            super.handleMessage(paramMessage);
            mTrendChart.updateData("50", (ArrayList) paramMessage.obj,type);
        }
    };

    public void initData(TrendChartData entity,boolean visible){
        if(entity==null){
            return;
        }
        mVisible=visible;
        if(mTrendChart!=null){
            mTrendChart.setXBottomVisible(visible);
        }

        arrayList = new ArrayList();
        for(int i=0;i<entity.getPreLottoDrop().getDrop().size();i++){
            TrendData item=new TrendData();
            item.setPid(entity.getPreLottoDrop().getDrop().get(i).getTermNum());
            String red="";
            String blue="";
            for(int j=0;j<entity.getPreLottoDrop().getDrop().get(i).getNumList().size();j++){
                red=red+entity.getPreLottoDrop().getDrop().get(i).getNumList().get(j)+",";
            }
            for(int j=0;j<entity.getPostLottoDrop().getDrop().get(i).getNumList().size();j++){
                blue=blue+entity.getPostLottoDrop().getDrop().get(i).getNumList().get(j)+",";
            }
            item.setRed(red);
            item.setBlue(blue);
            item.setType("row");
            arrayList.add(item);
//                    item.setRed();
        }
        TrendData averageData=new TrendData();
        averageData.setType("avg");
        String red="";
        String blue="";
        for(int i=0;i<entity.getPreLottoDrop().getAverageData().size();i++){
            red=red+entity.getPreLottoDrop().getAverageData().get(i)+",";
        }
        for(int i=0;i<entity.getPostLottoDrop().getAverageData().size();i++){
            blue=blue+entity.getPostLottoDrop().getAverageData().get(i)+",";
        }
        averageData.setRed(red);
        averageData.setBlue(blue);
        arrayList.add(averageData);

        red="";
        blue="";

        TrendData countNum=new TrendData();
        countNum.setType("dis");
        for(int i=0;i<entity.getPreLottoDrop().getCountNum().size();i++){
            red=red+entity.getPreLottoDrop().getCountNum().get(i)+",";
        }
        for(int i=0;i<entity.getPostLottoDrop().getCountNum().size();i++){
            blue=blue+entity.getPostLottoDrop().getCountNum().get(i)+",";
        }
        countNum.setRed(red);
        countNum.setBlue(blue);
        arrayList.add(countNum);

        red="";
        blue="";

        TrendData maxData=new TrendData();
        maxData.setType("mmv");
        for(int i=0;i<entity.getPreLottoDrop().getMaxData().size();i++){
            red=red+entity.getPreLottoDrop().getMaxData().get(i)+",";
        }
        for(int i=0;i<entity.getPostLottoDrop().getMaxData().size();i++){
            blue=blue+entity.getPostLottoDrop().getMaxData().get(i)+",";
        }
        maxData.setRed(red);
        maxData.setBlue(blue);
        arrayList.add(maxData);

        red="";
        blue="";

        TrendData maxContinue=new TrendData();
        maxContinue.setType("mlv");
        for(int i=0;i<entity.getPreLottoDrop().getMaxContinue().size();i++){
            red=red+entity.getPreLottoDrop().getMaxContinue().get(i)+",";
        }
        for(int i=0;i<entity.getPostLottoDrop().getMaxContinue().size();i++){
            blue=blue+entity.getPostLottoDrop().getMaxContinue().get(i)+",";
        }
        maxContinue.setRed(red);
        maxContinue.setBlue(blue);
        arrayList.add(maxContinue);

        mHandler.sendMessage(mHandler.obtainMessage(120, arrayList));

    }

//    private void initViews() {
//        this.mTrendView = (LottoTrendView) findViewById(R.id.ltv_trendView);
//        this.mTrendChart = new DDTrendChart(getActivity(), this.mTrendView);
//        this.mTrendView.setChart(this.mTrendChart);
//        this.mTrendChart.setShowYilou(true);
//        this.mTrendChart.setDrawLine(true);
//        this.mTrendChart.setSelectedChangeListener(this);
//    }

//    private final OkHttpClient client = new OkHttpClient();

//    private void loadData() {
//        // 根据01/30.xml 或者是01/50.xm可以调整数字
//        String url = "http://mobile.9188.com/data/app/zst/01/30.xml";
//
//        Request request = new Request.Builder()
//                .url(url)
//                .build();
//        client.newCall(request).enqueue(new Callback() {
//            @Override
//            public void onFailure(Call call, IOException e) {
//                System.out.println();
//            }
//
//            @Override
//            public void onResponse(Call call, Response response) throws IOException {
//                InputStream inputStream = response.body().byteStream();
//                try {
//                    a(inputStream);
//                } catch (XmlPullParserException e) {
//                    e.printStackTrace();
//                } finally {
//                    if (inputStream != null) {
//                        inputStream.close();
//                    }
//                }
//            }
//        });
//    }

//    protected void a(InputStream inputStream) throws XmlPullParserException, IOException {
//        ArrayList arrayList = new ArrayList();
//        Collection arrayList2 = new ArrayList();
//        XmlPullParser newPullParser = XmlPullParserFactory.newInstance().newPullParser();
//        newPullParser.setInput(inputStream, "utf-8");
//        TrendData r0;
//        for (int eventType = newPullParser.getEventType(); 1 != eventType; eventType = newPullParser.next()) {
//            String name = newPullParser.getName();
//            if (eventType == 2) {
//                if ("row".equals(name)) {
//                    TrendData trendData = new TrendData();
//                    trendData.setType("row");
//                    String attributeValue = newPullParser.getAttributeValue(null, "pid");
//                    if (!(TextUtils.isEmpty(attributeValue) || attributeValue.length() <= 4)) {
//                        attributeValue = attributeValue.substring(4);
//                    }
//                    trendData.setPid(attributeValue);
//                    trendData.setRed(newPullParser.getAttributeValue(null, "red"));
//                    trendData.setBlue(newPullParser.getAttributeValue(null, "blue"));
//                    trendData.setBalls(newPullParser.getAttributeValue(null, "balls"));
//                    trendData.setOes(newPullParser.getAttributeValue(null, "oe"));
//                    trendData.setBss(newPullParser.getAttributeValue(null, "bs"));
//                    trendData.setOne(newPullParser.getAttributeValue(null, "one"));
//                    trendData.setTwo(newPullParser.getAttributeValue(null, "two"));
//                    trendData.setThree(newPullParser.getAttributeValue(null, "three"));
//                    trendData.setCodes(newPullParser.getAttributeValue(null, "codes"));
//                    trendData.setSum(newPullParser.getAttributeValue(null, "sum"));
//                    trendData.setSpace(newPullParser.getAttributeValue(null, "space"));
//                    trendData.setNum(newPullParser.getAttributeValue(null, "num"));
//                    trendData.setTimes(newPullParser.getAttributeValue(null, "times"));
//                    trendData.setForm(newPullParser.getAttributeValue(null, "form"));
//                    arrayList.add(trendData);
//                } else if ("dis".equals(name)) {
//                    r0 = new TrendData();
//                    r0.setType("dis");
//                    r0.setRed(newPullParser.getAttributeValue(null, "red"));
//                    r0.setBlue(newPullParser.getAttributeValue(null, "blue"));
//                    r0.setBalls(newPullParser.getAttributeValue(null, "balls"));
//                    r0.setOne(newPullParser.getAttributeValue(null, "one"));
//                    r0.setTwo(newPullParser.getAttributeValue(null, "two"));
//                    r0.setThree(newPullParser.getAttributeValue(null, "three"));
//                    r0.setNum(newPullParser.getAttributeValue(null, "num"));
//                    arrayList2.add(r0);
//                } else if ("avg".equals(name)) {
//                    r0 = new TrendData();
//                    r0.setType("avg");
//                    r0.setRed(newPullParser.getAttributeValue(null, "red"));
//                    r0.setBlue(newPullParser.getAttributeValue(null, "blue"));
//                    r0.setBalls(newPullParser.getAttributeValue(null, "balls"));
//                    r0.setOne(newPullParser.getAttributeValue(null, "one"));
//                    r0.setTwo(newPullParser.getAttributeValue(null, "two"));
//                    r0.setThree(newPullParser.getAttributeValue(null, "three"));
//                    r0.setNum(newPullParser.getAttributeValue(null, "num"));
//                    arrayList2.add(r0);
//                } else if ("mmv".equals(name)) {
//                    r0 = new TrendData();
//                    r0.setType("mmv");
//                    r0.setRed(newPullParser.getAttributeValue(null, "red"));
//                    r0.setBlue(newPullParser.getAttributeValue(null, "blue"));
//                    r0.setBalls(newPullParser.getAttributeValue(null, "balls"));
//                    r0.setOne(newPullParser.getAttributeValue(null, "one"));
//                    r0.setTwo(newPullParser.getAttributeValue(null, "two"));
//                    r0.setThree(newPullParser.getAttributeValue(null, "three"));
//                    r0.setNum(newPullParser.getAttributeValue(null, "num"));
//                    arrayList2.add(r0);
//                } else if ("mlv".equals(name)) {
//                    r0 = new TrendData();
//                    r0.setType("mlv");
//                    r0.setRed(newPullParser.getAttributeValue(null, "red"));
//                    r0.setBlue(newPullParser.getAttributeValue(null, "blue"));
//                    r0.setBalls(newPullParser.getAttributeValue(null, "balls"));
//                    r0.setOne(newPullParser.getAttributeValue(null, "one"));
//                    r0.setTwo(newPullParser.getAttributeValue(null, "two"));
//                    r0.setThree(newPullParser.getAttributeValue(null, "three"));
//                    r0.setNum(newPullParser.getAttributeValue(null, "num"));
//                    arrayList2.add(r0);
//                }
//            }
//        }
//        arrayList.addAll(arrayList2);
//        mHandler.sendMessage(mHandler.obtainMessage(120, arrayList));
//    }


    public void onSelectedChange(TreeSet<Integer> treeSet, TreeSet<Integer> treeSet2) {

    }

//    private void loadData() {
//        JSONObject params = new JSONObject();
//        params.put("compute", 1);
//        params.put("count", 30);
//        params.put("drop", 1);
//        params.put("sort", 0);
//        params.put("tab", 0);
//        RequestService requestService = RetrofitManage.getInstance().getRequestService();
//        retrofit2.Call<BaseCallModel<TrendChartData>> baseCallModelCall = requestService.getChartData(params);
//        baseCallModelCall.enqueue(new ResponseCallback<BaseCallModel<TrendChartData>>() {
//            @Override
//            public void onSuccess(BaseCallModel<TrendChartData> data) {
//                TrendChartData entity=data.data;
//                ArrayList arrayList = new ArrayList();
//                for(int i=0;i<entity.getPreLottoDrop().getDrop().size();i++){
//                    TrendData item=new TrendData();
//                    item.setPid(entity.getPreLottoDrop().getDrop().get(i).getTermNum());
//                    String red="";
//                    String blue="";
//                    for(int j=0;j<entity.getPreLottoDrop().getDrop().get(i).getNumList().size();j++){
//                        red=red+entity.getPreLottoDrop().getDrop().get(i).getNumList().get(j)+",";
//                    }
//                    for(int j=0;j<entity.getPostLottoDrop().getDrop().get(i).getNumList().size();j++){
//                        blue=blue+entity.getPostLottoDrop().getDrop().get(i).getNumList().get(j)+",";
//                    }
//                    item.setRed(red);
//                    item.setBlue(blue);
//                    item.setType("row");
//                    arrayList.add(item);
////                    item.setRed();
//                }
//                TrendData averageData=new TrendData();
//                averageData.setType("avg");
//                String red="";
//                String blue="";
//                for(int i=0;i<entity.getPreLottoDrop().getAverageData().size();i++){
//                    red=red+entity.getPreLottoDrop().getAverageData().get(i)+",";
//                }
//                for(int i=0;i<entity.getPostLottoDrop().getAverageData().size();i++){
//                    blue=blue+entity.getPostLottoDrop().getAverageData().get(i)+",";
//                }
//                averageData.setRed(red);
//                averageData.setBlue(blue);
//                arrayList.add(averageData);
//
//                red="";
//                blue="";
//
//                TrendData countNum=new TrendData();
//                countNum.setType("dis");
//                for(int i=0;i<entity.getPreLottoDrop().getCountNum().size();i++){
//                    red=red+entity.getPreLottoDrop().getCountNum().get(i)+",";
//                }
//                for(int i=0;i<entity.getPostLottoDrop().getCountNum().size();i++){
//                    blue=blue+entity.getPostLottoDrop().getCountNum().get(i)+",";
//                }
//                countNum.setRed(red);
//                countNum.setBlue(blue);
//                arrayList.add(countNum);
//
//                red="";
//                blue="";
//
//                TrendData maxData=new TrendData();
//                maxData.setType("mmv");
//                for(int i=0;i<entity.getPreLottoDrop().getMaxData().size();i++){
//                    red=red+entity.getPreLottoDrop().getMaxData().get(i)+",";
//                }
//                for(int i=0;i<entity.getPostLottoDrop().getMaxData().size();i++){
//                    blue=blue+entity.getPostLottoDrop().getMaxData().get(i)+",";
//                }
//                maxData.setRed(red);
//                maxData.setBlue(blue);
//                arrayList.add(maxData);
//
//                red="";
//                blue="";
//
//                TrendData maxContinue=new TrendData();
//                maxContinue.setType("mlv");
//                for(int i=0;i<entity.getPreLottoDrop().getMaxContinue().size();i++){
//                    red=red+entity.getPreLottoDrop().getMaxContinue().get(i)+",";
//                }
//                for(int i=0;i<entity.getPostLottoDrop().getMaxContinue().size();i++){
//                    blue=blue+entity.getPostLottoDrop().getMaxContinue().get(i)+",";
//                }
//                maxContinue.setRed(red);
//                maxContinue.setBlue(blue);
//                arrayList.add(maxContinue);
//
//                mHandler.sendMessage(mHandler.obtainMessage(120, arrayList));
//            }
//
//            @Override
//            public void onFail(ResponseError error) {
//
//            }
//
//            @Override
//            public void onError() {
//
//            }
//        });
//    }
}
